// Copyright (C) 2022 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
//
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<广西木子科技有限公司>，授权编号：<NT220402151538>，代码指纹：<A.648883738.885>，技术对接人微信：<ID: Lingmuziyi>】
// 【授权寄送：<收件：李先生、地址：南宁市科园西十路11号国电智能大厦1101F、电话：17736659550、邮箱：yingshashou@vip.qq.com>】
//
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
//
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rainbowchat.push.ios;


import com.eva.epc.common.util.Platform;
import com.eva.epc.common.util.PropertyMan;
import com.eva.framework.utils.LoggerFactory;

/**
 * iOS的APNs推送相关配置信息读取工具类。
 *
 * @author Jason
 * @since 4.3
 */
public class APNSConf {
    private PropertyMan pm = null;

    private final static String TAG = APNSConf.class.getSimpleName();
    private static APNSConf instance = null;

    public static APNSConf getInstance() {
        if (instance == null)
            instance = new APNSConf();
        return instance;
    }

    public APNSConf() {
        String pathOriginal = APNSConf.class.getResource("apns_conf.properties").getPath();
        String path = Platform.isWindows() ? pathOriginal.substring(1) : pathOriginal;

        LoggerFactory.getLog().debug("[" + TAG + "] iOS-APNs消息推送配置文件路径：" + path);

        pm = new PropertyMan(path);
    }

    /**
     * 因Properties文件默认机制是采用ISO8859-1处理的，所以中文字符读取会存在乱码现象。
     * 本方法是在父类方法的基础上解决乱码问题。
     *
     * @param key
     * @return
     */
    public String getPropertyUTF(String key) {
        try {
            String s = pm.getProperty(key);
            return new String(s.getBytes("ISO-8859-1"), "utf-8");
        } catch (Exception e) {
            LoggerFactory.getLog().error("[" + TAG + "] iOS-APNs的配置项：" + key
                    + " 读取失败，请检查您的配置文件路径是否放置正确！", e);
            return null;
        }
    }

    private String getPUSH_CER_PATH_DEV() {
        return getPropertyUTF("PUSH_CER_PATH_DEV");
    }

    private String getPUSH_CER_PATH_DISTRIBUTION() {
        return getPropertyUTF("PUSH_CER_PATH_DISTRIBUTION");
    }

    public String getPushCerPath() {
        LoggerFactory.getLog().debug("[" + TAG + "] 正在读取iOS-APNs的证书，当前推送模式："
                + (isDistrubuttionMode() ? "生产模式" : "开发模式"));
        return this.isDistrubuttionMode() ? getPUSH_CER_PATH_DISTRIBUTION() : getPUSH_CER_PATH_DEV();
    }

    public String getPUSH_CER_PASSWORD() {
        return getPropertyUTF("PUSH_CER_PASSWORD");
    }

    public String getPUSH_MY_IOS_APP_BUNDLE_ID() {
        return getPropertyUTF("PUSH_MY_IOS_APP_BUNDLE_ID");
    }

    /**
     * 推送开关。
     *
     * @return true表示开启推送、false表示关闭推送（即不进行APNs的推送）。
     */
    public boolean isPushOpen() {
        return "1".equals(getPropertyUTF("PUSH_OPEN"));
    }

    /**
     * 是否生产模式。
     *
     * @return
     */
    public boolean isDistrubuttionMode() {
        return "1".equals(getPropertyUTF("PUSH_MODE"));
    }

//	public static void main(String[] args)
//	{
//		System.out.println("生产模式？"+APNSConf.getInstance().isDistrubuttionMode());
//		System.out.println("getPUSH_CER_PATH_DEV？"+APNSConf.getInstance().getPUSH_CER_PATH_DEV());
//		System.out.println("getPUSH_CER_PATH_DISTRIBUTION？"+APNSConf.getInstance().getPUSH_CER_PATH_DISTRIBUTION());
//		System.out.println("getPUSH_CER_PASSWORD？"+APNSConf.getInstance().getPUSH_CER_PASSWORD());
//
//	}

}
